package done.easy_501_600;

import org.junit.Test;

import static com.study.util.LogUtil.info;
import static java.lang.Math.min;

/**
 * 598. Range Addition II 范围求和 II
 * <p>
 * 给定一个初始元素全部为 0，大小为 m * n 的矩阵 M 以及在 M
 * 上的一系列更新操作。
 * 操作用二维数组表示，其中的每个操作用一个含有两个正整数 a
 * 和 b 的数组表示，含义是将所有符合 0 <= i < a 以及
 * 0 <= j < b 的元素 M[i][j] 的值都增加 1。
 * 在执行给定的一系列操作后，你需要返回矩阵中含有最大整数的元素个数。
 * <p>
 * 示例 1:
 * 输入: m = 3, n = 3
 * operations = [[2,2],[3,3]]
 * 输出: 4
 * 解释:
 * 初始状态, M =[[0, 0, 0],
 * [0, 0, 0],
 * [0, 0, 0]]
 * <p>
 * 执行完操作 [2,2] 后, M = [[1, 1, 0],
 * [1, 1, 0],
 * [0, 0, 0]]
 * <p>
 * 执行完操作 [3,3] 后, M = [[2, 2, 1],
 * [2, 2, 1],
 * [1, 1, 1]]
 * <p>
 * M 中最大的整数是 2, 而且 M 中有4个值为2的元素。因此返回 4。
 * <p>
 * 解答：
 * 又一个脑筋急转弯。。
 * 每次操作都是左上角区域从（0, 0）到（a, b）的矩形，必定重叠，所以找最小的a乘最小的b就行
 */
@SuppressWarnings("all")
public class RangeAdditionII {

    public int maxCount(int m, int n, int[][] ops) {
        // 190410 first
        return -1;
    }

    @Test
    public void test() {
        int m = 3;
        int n = 3;
        int[][] ops = new int[][]{{2, 2},
                {3, 3}};
        info(maxCount(m, n, ops));
    }
}
































/*
public int maxCount(int m, int n, int[][] ops) {
    int i = m;
    int j = n;
    for(int k = 0, len = ops.length; k < len; k++){
        i = min(i, ops[k][0]);
        j = min(j, ops[k][1]);
    }
    return i * j;
}
*/

